1. Technical Field
The present invention relates in general to a method and system for improved graphical computation and in particular to a method and system for utilizing graphical computation to process a data stream. Still more particularly, the present invention relates to a method and system of graphical computation to efficiently process a graphics data stream.
2. Description of the Related Art
Data processing systems such as personal computers and work stations are commonly utilized to run computer-aided design ("CAD") applications, computer-aided manufacturing ("CAM") applications, and computer-aided software engineering ("CASE") tools. Engineers, scientists, technicians, and others employ these applications daily. These applications involve complex calculations, such as finite element analysis, to model stress in structures. Other applications include chemical or molecular modelling applications. CAD/CAM/CASE applications are normally graphics intensive in terms of the information relayed to the user. Other data processing system users may employ other graphics intensive applications such as desk top publishing applications. Generally, users of these applications require and demand that the data processing systems be able to provide extremely fast graphics information.
The processing of graphics data streams to provide a graphical display on a video display terminal requires an extremely fast graphics processing system in order to provide a display with a rapid response. It is desirable to be able to provide the performance required utilizing the present technology without having to change the microcode in a data processing system. In order to meet the performance demands of users employing graphics applications, multiple floating point processors have been utilized to provide the computational power needed for higher performance.
Two basic approaches are presently available for providing extremely fast graphics. One approach for providing fast graphics is a series or "pipeline" approach. Under a pipeline approach, a number of processors are serially coupled to form a "pipeline" for processing the graphics data stream. The work load is then apportioned between the processors in the pipeline. This approach requires that the interface between each processor in the pipeline be able to transfer the entire data stream. In addition, the balancing of work across more than three or four processors in a pipeline is difficult. Often times, one or more processors may be idle because of uneven distribution of tasks over the individual processors.
Another approach involves a parallel processor architecture. All of the processors in a parallel processing architecture must be able to access a common input stream, resulting in the input bus becoming the bottleneck in such a system. Another problem associated with this approach is that when multiple processors are connected together, it is difficult to obtain sufficient bandwidth into and out of a shared memory configuration. Additionally, breaking up the input data streams, which are essentially serial, into a format for parallel processing is also a problem for a multiple tier parallel processing system. More specifically, breaking up a data stream into parallel pieces introduces problems with synchronization, i.e., maintaining temporal order, and the problems arising from the processing of graphics attributes, which must be serially processed.
As a result, an inefficient usage of processing power may occur with either of the presently available systems. Therefore, it would be desirable to have a method and system in a graphical processing system to efficiently process graphics data streams.